define(['jquery'], function ($) {
	
	var file_select = $('#file-select'),
		files_num; // 用于判断当前选中的附件是否上传完全

	// 点击附件上传， 选择要上传的附件
	$('#upload-file').on('click', function (e) {

		if (e.target === this) file_select.click();

	});


	file_select.on('change', function (e) {

		var files = e.target.files,
			length = files.length;

		files_num = length;

		if (length <= 0 ) return;

		for (let i = 0; i < length; i++) {

			var file = files[i];

			dealFile(file);

		}

	});

	/*
	 * 处理选择的文件
	 * @param: file => 选中的第index文件
	 * @param: index => 当前被处理文件的下标
	 */
	function dealFile (file) {

		var fileType = getSuffix(file),
			reader = new FileReader();
			console.log(fileType);
		if (!fileType) return;

		reader.onload = function (evt) {

			var ajax_data = { 
				fileData: evt.target.result,
				fileName: file.name,
				fileType: fileType
			};

			ajaxPost(ajax_data).then(function (json) {
				callBack(json, ajax_data);
			});
		}

		reader.readAsDataURL(file);
	}

	/*
	 * 获取文件后缀名
	 * @param: file => 选中的文件
	 * @return: undefined 或者 文件名
	 */
	function getSuffix (file) {

		var fileSuffix = file.name.split(".").pop(), // 文件后缀
			type; // 文件类型

		switch (fileSuffix) {
            case "doc":
                type = "doc.png";
                break;
            case "pdf":
                type = "pdf.png";
                break;
            case "gif":
                type = "pdf.png";
                break;
            case "zip":
                type = "rar.png";
                break;
            case "rar":
                type = "rar.png";
                break;
            case "xls":
                type = "xls.png";
                break;
            case "png":
                type = "jpg.png";
                break;
            case "jpg":
                type = "jpg.png";
                break;
            case "jpeg":
                type = "jpg.png";
                break;
            default:
                break;
        }

        return type;

	}


	/*
	 * ajax上传文件
	 * @param: data => ajax提交的数据
	 * @return promise对象
	 */
	function ajaxPost (data) {

	 	return new Promise(function (resolve, reject) {

	 		$.ajax({
	 			url: '',
	 			type: 'post',
	 			datatype: 'json',
	 			data: data,
	 			success: function (json) {
	 				files_num--;
	 				json.code == 0 ? alert(json.msg) : resolve(json);
	 			},
	 			error: function () {
	 				files--;
	 				alert('上传失败');
	 			}
	 		})
	 	});
	}

	/**
	 * 上传文件成功之后的回调函数
	 * @param: json => ajax返回的数据
	 * @param: data => 被上传文件的信息
	 */
	function callBack (json, data) {

		var tem = '<div class="file-item">' +
                	'<img src="<?=HW_IMG?>"' + data.fileType + '" class="icon">' +
                	'<span class="fileName">' + data.fileName +'</span>' +
                	'<input type="hidden" name="attachment[]" value="' + json.file_id + '" >' +
                	'<a class="color-blue" href="' + json.url + '">下载</a>' +
                	'<a href="#" class="del color-blue">删除</a>' +
                '</div>';

        $("#file-container").append(tem);

        // if (files_num <= 0) 
	} 

});